package leetcode.bit;
// 已知n是非负数
// 返回大于等于n的最小的2某次方
// 如果int范围内不存在这样的数，返回整数最小值
public class Code_Near2power {
    public static int near2power(int n) {
        if (n < 1) {
            return Integer.MIN_VALUE;
        }
        
        n -= 1;
        
        // 把低位全部置1
        n |= n >>> 1;
        n |= n >>> 2;
        n |= n >>> 4;
        n |= n >>> 8;
        n |= n >>> 16;
        
        return n + 1;
    }
    
    public static void main(String[] args){
        System.out.println(near2power(1));
        System.out.println(near2power(7));
        System.out.println(near2power(17));
    }
}